Mongodb 探索

简介

MongoDB是一个跨平台,面向文档的数据库,提供高性能,高可用性和易于扩展。MongoDB是工作在集合和文档上一种概念。

特点

  • 支持特别查询在MongoDB中,可以通过字段,范围查询进行搜索,并且还支持正则表达式搜索。
  • 索引可以索引文档中的任何字段。
  • 复制MongoDB支持主从复制。主机可以执行读写操作,从机从主机复制数据,只能用于读取或备份(不写入)
  • 复制数据MongoDB可以在多台服务器上运行。 复制数据以保持系统正常运行,并在硬件故障的情况下保持其运行状态。
  • 负载均衡由于数据放在碎片中,因此具有自动负载平衡配置。
  • 支持映射缩减和聚合工具
  • 使用JavaScript而不是Procedure
  • 它是一个用C++编写的无模式数据库
  • 提供高性能
  • 轻松存储任何大小的文件,而不会使您的堆栈复杂化
  • 在故障的情况下易于管理
  • 它还支持:
    • 具有动态模式的JSON数据模型
    • 自动分片用于水平可扩展性
    • 内置复制高可用性

优点

  • MongoDB 的架构较少。它是一个文档数据库,它的一个集合持有不同的文档。
  • 从一个到另一个的文档的数量,内容和大小可能有差异。
  • MongoDB 中单个对象的结构很清淅。
  • MongoDB 中没有复杂的连接。
  • MongoDB 提供深度查询的功能,因为它支持对文档的强大的动态查询。
  • MongoDB 很容易扩展。
  • 它使用内部存储器来存储工作集,这是其快速访问的原因。

场景

  • 大而复杂的数据
  • 移动和社会基础设施数据
  • 内容管理和交付
  • 用户数据管理
  • 数据中心

安装

1
2
3
4
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz    # 下载
tar -zxvf mongodb-linux-x86_64-3.0.6.tgz # 解压

mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb # 将解压包拷贝到指定目录

MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到 PATH 路径中:

1
export PATH=<mongodb-install-directory>/bin:$PATH

为你 MongoDB 的安装路径。如本文的 /usr/local/mongodb 。

创建数据库目录

MongoDB的数据存储在data目录的db目录下,但是这个目录在安装过程不会自动创建,所以你需要手动创建data目录,并在data目录中创建db目录。

以下实例中我们将data目录创建于根目录下(/)。

注意:/data/db 是 MongoDB 默认的启动的数据库路径(–dbpath)。

1
mkdir -p /data/db

运行

可以在命令行中执行mongo安装目录中的bin目录执行mongod命令来启动mongdb服务。如果你的数据库目录不是/data/db,可以通过 –dbpath 来指定。

1
$ ./mongod

启动参数

  • –dbpath 指定数据目录,默认是/data/db,每个mongod进程都需要独立的数据目录
  • –port 指定服务器监听端口,默认27017
  • –fork 以守护进程的方式运行服务
  • –logpath 指定输出日志的路径,而不是输出到命令行
  • –config 指定配置文件

停止

  • 查看进程,使用kill命令
  • 在客户端进去,使用db.shutdownServer()

使用

1
2
show dbs;
#查看数据库


1
2
use wesure;
#切换或者创建(如果没有该库的话)

1
2
db.getName();
#db; db和getName方法是一样的效果,都可以查询当前使用的数据库

1
2
db.stats();
#查看数据库状态

用户相关

1、添加一个用户

1
2
3
db.addUser("name");

db.addUser("userName", "pwd123", true); 添加用户、设置密码、是否只读

2、数据库认证、安全模式

1
db.auth("userName", "123123");

3、显示当前所有用户

1
show users;

4、删除用户

1
db.removeUser("userName");

其他

  • 查询之前的错误信息

    1
    db.getPrevError();
  • 清除错误记录

    1
    db.resetError();
------ 本文结束 ------

版权声明

Medivh's Notes by Medivh is licensed under a Creative Commons BY-NC-ND 4.0 International License.
Medivh创作并维护的Medivh's Notes博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证
本文首发于Medivh 博客( http://www.mknight.cn ),版权所有,侵权必究。